package nutz.cyx.util;

import org.nutz.Nutz;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Record;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.pager.Pager;
import org.nutz.dao.sql.Sql;

import java.util.List;

/**
 * Created by chenyingxi on 2014/5/20.
 * 一些nutDao的辅助类
 */
public class DbUtil {
    /**
     * 执行resource/sql/*.sql文件里面的sql语句 具有分页功能
     *
     * @param nutDao 传入nutzDao对象
     * @param sqlId  sql文件中sql的id
     * @param clas   转换的model类
     * @return 返回一个cla类型的List
     */
    public static List querySqlHelper(NutDao nutDao, String sqlId, Class<?> clas) {
        Sql sql = nutDao.sqls().create(sqlId);
        sql.setCallback(Sqls.callback.entities());
        sql.setEntity(nutDao.getEntity(clas));
        nutDao.execute(sql);
        return sql.getList(clas);
    }

    /**
     * 执行resource/sql/*.sql文件里面的sql语句 具有分页功能
     *
     * @param nutDao 传入nutzDao对象
     * @param sqlId  sql文件中sql的id
     * @param clas   转换的model类
     * @param pager  分页信息
     * @return 返回一个cla类型的List
     */
    public static List querySqlHelper(NutDao nutDao, String sqlId, Class<?> clas, Pager pager) {
        Sql sql = nutDao.sqls().create(sqlId);
        sql.setCallback(Sqls.callback.entities());
        sql.setPager(pager);
        sql.setEntity(nutDao.getEntity(clas));
        nutDao.execute(sql);
        return sql.getList(clas);
    }

    /**
     * 执行resource/sql/*.sql文件里面的sql语句
     *
     * @param nutDao 传入nutzDao对象
     * @param sql    Sql对象可以设置你的查询信息
     * @param clas   转换的model类
     * @return 返回一个cla类型的List
     */
    public static List querySqlHelper(NutDao nutDao, Sql sql, Class<?> clas) {
        sql.setCallback(Sqls.callback.entities());
        sql.setEntity(nutDao.getEntity(clas));
        nutDao.execute(sql);
        return sql.getList(clas);
    }

    /**
     * 执行传入的sql语句
     *
     * @param sql    sql语句
     * @param nutDao 传入nutzDao对象
     * @param clas   转换的model类
     * @return 返回一个cla类型的List
     */

    public static List querySqlHelper(String sql, NutDao nutDao, Class<?> clas) {
        Sql s = Sqls.create(sql);
        s.setCallback(Sqls.callback.entities());
        s.setEntity(nutDao.getEntity(clas));
        nutDao.execute(s);
        return s.getList(clas);
    }


}
